﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using BussinessLogicTecnoPez.Seguridad_Tecnopez;

public partial class login : System.Web.UI.Page
{
    private string msgError;
    private bool noValidate = false; //para no perder tiempo logeandose...
    protected void Page_Load(object sender, EventArgs e)
    {
        if (noValidate)
        {
            //FormsAuthentication.RedirectFromLoginPage("admin", true);
            if (this.validateUser("admin", "admin"))
                FormsAuthentication.RedirectFromLoginPage("admin", LoginTecnoPez.RememberMeSet);
        }
        
    }
    protected void LoginTecnoPez_Authenticate(object sender, AuthenticateEventArgs e)
    {
        if (this.validateUser(this.LoginTecnoPez.UserName, this.LoginTecnoPez.Password))
            FormsAuthentication.RedirectFromLoginPage(LoginTecnoPez.UserName, LoginTecnoPez.RememberMeSet);
    }
    private bool validateUser(string user, string password)
    {
        
        Usuario.getManager.ClearFilters();
        Usuario.getManager.AddFilter("Nombre", BussinessLogicTecnoPez.GenericManager<Usuario>.filterOperator.Equals, user);
        Usuario.getManager.AddFilter("Contrasenia", BussinessLogicTecnoPez.GenericManager<Usuario>.filterOperator.Equals, password);

        List<Usuario> objLista = new List<Usuario>();
        objLista = Usuario.getManager.GetFilter();

        switch (objLista.Count)
        {
            case 0:
                this.msgError = "El usuario o la contraseña son incorrectos. Vuelva a intentarlo.";
                return false;
            case 1:
                if (objLista[0].Baja == "S")
                {
                    this.msgError = "El usuario ha sido dado de baja. Comuníquese con el administrador del sistema.";
                    return false;
                }
                //elimino la variable del menu para que lo cree nuevamente
                bool blnExist = false;
                for (int i = 0; i < Application.Count; i++)
                {
                    if (Application.Keys[i] == "MENU_" + objLista[0].Rol.Nombre.Trim())
                    {
                        blnExist = true;
                        break;
                    }
                }
                if (!blnExist)
                    Application.Add("MENU_" + objLista[0].Rol.Nombre.Trim(), null);

                //Application["MENU_" + objLista[0].Rol.Nombre.Trim()] = null;
                //else

                return true;
            default:
                this.msgError = "Error inesperado. Usuario duplicado.";
                return false;
        }
    }
    protected void LoginTecnoPez_LoginError(object sender, EventArgs e)
    {
        this.LoginTecnoPez.FailureText=this.msgError;
    }
}
